When a data stream, for example a sequence of images or video, is sent over a communication network, certain items of data of the data stream are liable to be lost or corrupted.
In the case of a packet-switched communication network, the data stream is cut up into data packets or network packets. On transmitting the data stream so cut up, data packets may get lost.
A consequence of the loss or the corruption of a data packet which occurs on sending a video sequence is the appearance of artifacts (artificial disturbance) in certain images of the video sequence. These artifacts reduce the quality of the video sequence.
In order to improve the quality of the images, error resilience techniques are applied to the images in the sequence of images.
For example, these methods of error resilience consist of error concealment algorithms or of retransmission algorithms.
Each image of a sequence of images is divided into elementary units termed macroblocks. Furthermore, each image is cut up into slices before being coded. Each slice is composed of one or more elementary units termed macroblocks.
Moreover, the servers may employ different strategies for cutting up the image into image portions. For example, strategies consisting in using a fixed number of macroblocks per slice or a fixed number of bytes per slice may be employed.
Depending on the type of network and on the network protocol used to transport the data, the data of the data stream corresponding to a slice may either be inserted into a network packet or be cut up into groups of data (termed “fragmented units”). In particular, if the size of the data corresponding to a slice (in number of bits) is greater than the maximum size permitted for a network packet, the slice is cut up into groups of data. Each group of data or fragmented unit is inserted into a network packet. Furthermore, when the size of the data corresponding to the slices (in number of bits) is considerably less than the maximum size permitted for a network packet, it is possible that data corresponding to several slices may be inserted into the same data packet or network packet.
When the data corresponding to the same slice are divided into fragmented units, that is to say that the data of the same slice are inserted into different data packets, the effect on the decoding of the loss of each data packet corresponding to the same slice is different. For example, the effect of the loss of a data packet containing a fragmented unit corresponding to the start of a slice is not identical to the effect of the loss of a data packet containing the fragmented unit corresponding to the end of the slice. As a matter of fact, if the fragmented unit corresponding to the start of the slice is lost, the slice cannot be decoded, even if the other fragmented units of a slice have not been lost.
Consequently, the loss of a packet means that the number of items of data to correct is higher or lower depending on the coding used.
Document US 2007/0189286 describes a method enabling a codestream to be reconstructed that is compatible with the decoding. In particular, this method makes it possible to detect, at the depacketizer, whether a received data packet that follows a lost packet corresponds to a slice start, and thus to send such a packet to the decoder.
Nevertheless, this method does not act on the error correction and does not make it possible to improve the quality of reconstruction by error correction when multiple losses of data packets occur in the case of sending by fragmented units.